package com.monitor.model;

import java.util.List;
import java.util.Map;

/**
 * 监控配置模型类
 * 存储监控的全局配置信息
 * 对应monitor.json文件中的配置项
 */
public class MonitorConfig {
    private Map<String, String> commands; // 监控命令映射表
    private int connectionTimeout;        // 连接超时时间(毫秒)
    private int commandTimeout;           // 命令执行超时时间(毫秒)
    private int threadPoolSize;           // 线程池大小
    private String resultFilePath;        // 结果文本文件路径
    private String htmlReportPath;        // HTML报告文件路径
    private List<String> serviceList;     // 需要监控的服务列表

    /**
     * 获取监控命令映射表
     * @return 监控项到命令的映射
     */
    public Map<String, String> getCommands() {
        return commands;
    }

    /**
     * 设置监控命令映射表
     * @param commands 监控项到命令的映射
     */
    public void setCommands(Map<String, String> commands) {
        this.commands = commands;
    }

    /**
     * 获取连接超时时间
     * @return 连接超时时间(毫秒)
     */
    public int getConnectionTimeout() {
        return connectionTimeout;
    }

    /**
     * 设置连接超时时间
     * @param connectionTimeout 连接超时时间(毫秒)
     */
    public void setConnectionTimeout(int connectionTimeout) {
        this.connectionTimeout = connectionTimeout;
    }

    /**
     * 获取命令执行超时时间
     * @return 命令执行超时时间(毫秒)
     */
    public int getCommandTimeout() {
        return commandTimeout;
    }

    /**
     * 设置命令执行超时时间
     * @param commandTimeout 命令执行超时时间(毫秒)
     */
    public void setCommandTimeout(int commandTimeout) {
        this.commandTimeout = commandTimeout;
    }

    /**
     * 获取线程池大小
     * @return 线程池大小
     */
    public int getThreadPoolSize() {
        return threadPoolSize;
    }

    /**
     * 设置线程池大小
     * @param threadPoolSize 线程池大小
     */
    public void setThreadPoolSize(int threadPoolSize) {
        this.threadPoolSize = threadPoolSize;
    }

    /**
     * 获取结果文本文件路径
     * @return 结果文本文件路径
     */
    public String getResultFilePath() {
        return resultFilePath;
    }

    /**
     * 设置结果文本文件路径
     * @param resultFilePath 结果文本文件路径
     */
    public void setResultFilePath(String resultFilePath) {
        this.resultFilePath = resultFilePath;
    }

    /**
     * 获取HTML报告文件路径
     * @return HTML报告文件路径
     */
    public String getHtmlReportPath() {
        return htmlReportPath;
    }

    /**
     * 设置HTML报告文件路径
     * @param htmlReportPath HTML报告文件路径
     */
    public void setHtmlReportPath(String htmlReportPath) {
        this.htmlReportPath = htmlReportPath;
    }
    
    /**
     * 获取需要监控的服务列表
     * @return 服务列表
     */
    public List<String> getServiceList() {
        return serviceList;
    }
    
    /**
     * 设置需要监控的服务列表
     * @param serviceList 服务列表
     */
    public void setServiceList(List<String> serviceList) {
        this.serviceList = serviceList;
    }
} 